package com.hailtouniv.common.util;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;


@SuppressWarnings("unchecked")
public final class GenericsUtil {

	private GenericsUtil() {
		
	}
	
	public static Class getGenericClass(Class clazz, int index) {
		Type genType = clazz.getGenericSuperclass();
		
		if(genType instanceof ParameterizedType) {
			Type[] params = ((ParameterizedType)genType).getActualTypeArguments();
			
			if((params != null) && (params.length >= index - 1)) {
				return (Class) params[index];
			}
		}
		return null;
	}
	
	public static Class getGenericClass(Class clazz) {
		return getGenericClass(clazz, 0);
	}
}
